package com.example.sbeducation.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.sbeducation.dto.HomeworkDTO;
import com.example.sbeducation.entity.Homework;

import java.util.List;

/**
 * 作业服务接口
 */
public interface HomeworkService {

  /**
   * 创建作业
   * 
   * @param homeworkDTO 作业信息
   * @return 作业ID
   */
  Long createHomework(HomeworkDTO homeworkDTO);

  /**
   * 更新作业
   * 
   * @param homeworkDTO 作业信息
   */
  void updateHomework(HomeworkDTO homeworkDTO);

  /**
   * 删除作业
   * 
   * @param homeworkId 作业ID
   */
  void deleteHomework(Long homeworkId);

  /**
   * 根据ID获取作业
   * 
   * @param homeworkId 作业ID
   * @return 作业
   */
  Homework getHomeworkById(Long homeworkId);

  /**
   * 获取作业详情（包含更多信息的DTO）
   * 
   * @param homeworkId 作业ID
   * @return 作业详情DTO
   */
  HomeworkDTO getHomeworkDetail(Long homeworkId);

  /**
   * 获取教师发布的作业列表
   *
   * @param teacherId 教师ID
   * @param title     作业标题(可选)
   * @param page      页码
   * @param size      每页大小
   * @return 作业分页列表
   */
  Page<Homework> getTeacherHomeworkList(Long teacherId, String title, Integer page, Integer size);

  /**
   * 获取学生的作业列表
   * 
   * @param studentId 学生ID
   * @param page      页码
   * @param size      每页数量
   * @return 作业分页列表
   */
  Page<Homework> getStudentHomeworkList(Long studentId, Integer page, Integer size);

  /**
   * 获取学生的作业列表（带标题搜索）
   * 
   * @param studentId 学生ID
   * @param title     作业标题(可选)
   * @param page      页码
   * @param size      每页数量
   * @return 作业分页列表
   */
  Page<HomeworkDTO> getStudentHomeworkList(Long studentId, String title, Integer page, Integer size);
}